package API.RegexDome;

/**
 * ClassName:RegexText014
 * Package:API.RegexDome
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/2/1-21:28
 * @Version:v1.0
 */
public class RegexText014 {
    /*
    * 分组
    * 每一组是由组号,也就是序号
    * 1.从1开始,连续不间断
    * 2.以左括号为基准,最左边的是第一组,其次为第二组,以此类推
    *
    *
    * 捕获分组：就是把这一组的数据捕获出来,在用有一次*/
    public static void main(String[] args) {
        String regex001="\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z{2,3}){1,2}";//邮箱号
        String regex002="[1-9]\\d{16}(\\d|X|x)";//简易身份证
        String regex003="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";//24小时时间
        String regex004="([01]\\d|2[0-3])(:[0-5]\\d){2}";

        //需求1：判断一个字符串的开始字符和结束字符是否一致?只考虑一个字符
        //举例：a123a  b456b  17891
        /*
        *   \\ 组号：表示把第X组的内容拿出来再用一次*/
        String regex01 = "(.).+\\1";
        System.out.println("a123a".matches(regex01));//true
        System.out.println("17891".matches(regex01));//true
        System.out.println("&789&".matches(regex01));//true
        System.out.println("a123".matches(regex01));//false

        System.out.println("-------------------");
        //需求2：判断一个字符串的开始部分和结束部分是否一致?可以有多个字符
        //举例：abc123abc  b143b  123789123
        String regex02 ="(.+).+\\1";
        System.out.println("abc123abc".matches(regex02));//true
        System.out.println("b143b".matches(regex02));//true
        System.out.println("123789123".matches(regex02));//true
        System.out.println("abc123abd".matches(regex02));//false
        System.out.println("-------------------");

        //需求3：判断一个字符串的开始部分和结束部分是否一致?开始部分内部每个字符也需要一致
        //举例：aaa123aaa  bbb456bbb  111789111

        //(.) 表示把首字母看做一组
        // \\2 表示把首字母拿出来再次使用
        // * 表示0次或者多次
        String regex03 = "((.)\\2*).+\\1";
        System.out.println("aaa123aaa".matches(regex03));//true
        System.out.println("bbb456bbb".matches(regex03));//true
        System.out.println("111789111".matches(regex03));//true
        System.out.println("abc123abd".matches(regex03));//false
    }
}
